import logging
import time
import os

class Logger():

    def __init__(self):
        # 实例化记录器
        self.logger = logging.getLogger()
        # 设置记录器的日志等级
        self.logger.setLevel(logging.INFO)

        # 实例化控制台输出的处理器
        sh = logging.StreamHandler()
        # 设置处理器日志等级
        sh.setLevel(logging.INFO)

        # 文件输出日志的文件名
        file_name = "{}.log".format(time.strftime("%Y-%m-%d"))
        # 文件输出日志的路径
        path_abs = os.path.dirname(__file__)            # 拿的是logger.py这个文件的路径
        file_path = os.path.join(path_abs, "..", "log") # 拼接后，是项目根目录下log目录的路径
        if not os.path.isdir(file_path):                # 如果目录不存在，就创建目录
            os.makedirs(file_path)
        # 文件输出的处理器
        fh = logging.FileHandler(filename=os.path.join(file_path, file_name), encoding='utf-8')
        # 设置处理器日志等级
        fh.setLevel(logging.INFO)

        # 设置日志输出格式
        formatter = logging.Formatter("%(asctime)s|%(levelname)s|%(filename)s|%(lineno)s|%(message)s")
        sh.setFormatter(formatter)
        fh.setFormatter(formatter)

        # 将处理器添加到记录器中
        self.logger.addHandler(fh)
        self.logger.addHandler(sh)

logger = Logger().logger